package presentacion;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JComboBox;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JButton;
import javax.swing.table.DefaultTableModel;

import static biblioteca.FuncionesDeVentanas.*;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.sql.*;

public class BusquedaDeProveedor extends JInternalFrame {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	final  String CONTROLADOR ="com.mysql.jdbc.Driver";
	final  String URL_BASEDATOS = "jdbc:mysql://localhost/pos";
	
	Vector<Object> arregloTemporal;
	
	private JTextField textFieldCampoBuscarProveedor;
	private JTable table;
	private JComboBox comboBoxBuscarProveedor;
	private JButton btnRealizarBusquedaProveedor;
	private JButton btnAgregarProveedor;
	private JButton btnRetornar;
	
	// TODO ... Revisar esta variable private RegistrarProveedor abrirBuscarProveedor;
	private final String consultaGeneral = "SELECT * FROM proveedores";
	private Connection cn;
	private String consultaEspecifica;
	
	private RegistroDeProveedor ventanaPadre;
	
	/* *
	 * Launch the application.
	 * /
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try 
				{
					BusquedaDeProveedor frame = new BusquedaDeProveedor();
					frame.setVisible(true);
				}
				catch (Exception e) 
				{
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public BusquedaDeProveedor(RegistroDeProveedor padre) {
		setClosable(true);
		setTitle("Buscar Proveedor");
		setBounds(100, 100, 582, 378);
		getContentPane().setLayout(null);
		
		ventanaPadre = padre;
		quitarBotonEsquinaIzquierdaJInternalFrame(this);
		
		JLabel lblBuscarPor = new JLabel("Buscar Por:");
		lblBuscarPor.setBounds(24, 32, 82, 16);
		getContentPane().add(lblBuscarPor);
		
		comboBoxBuscarProveedor = new JComboBox();
		comboBoxBuscarProveedor.setModel(new DefaultComboBoxModel(new String[] {"Codigo", "Nombre ", "RNC"}));
		comboBoxBuscarProveedor.setBounds(22, 47, 112, 26);
		getContentPane().add(comboBoxBuscarProveedor);
		
		textFieldCampoBuscarProveedor = new JTextField();
		textFieldCampoBuscarProveedor.setBounds(146, 46, 237, 28);
		getContentPane().add(textFieldCampoBuscarProveedor);
		textFieldCampoBuscarProveedor.setColumns(10);
		
		btnRealizarBusquedaProveedor = new JButton("Buscar");
		btnRealizarBusquedaProveedor.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) 
			{	
				if (comboBoxBuscarProveedor.getSelectedIndex() == 0) 
				{
					consultaEspecifica = "SELECT * FROM proveedores WHERE id_proveedor LIKE'%" + textFieldCampoBuscarProveedor.getText() + "%'";
					cargarListaProveedoresPor(consultaEspecifica);
				}
				else
				{
					if (comboBoxBuscarProveedor.getSelectedIndex() == 1) 
					{
						consultaEspecifica = "SELECT * FROM proveedores WHERE nombre LIKE'%" + textFieldCampoBuscarProveedor.getText() + "%'";
						cargarListaProveedoresPor(consultaEspecifica);
					}
					else
					{
						if (comboBoxBuscarProveedor.getSelectedIndex() == 2) 
						{
							consultaEspecifica = "SELECT * FROM proveedores WHERE rnc LIKE'%" + textFieldCampoBuscarProveedor.getText() + "%'";
							cargarListaProveedoresPor(consultaEspecifica);
						}
					}
				}						
			}
		});
		btnRealizarBusquedaProveedor.setBounds(407, 46, 90, 28);
		getContentPane().add(btnRealizarBusquedaProveedor);
		
		table = new JTable();
		
		JScrollPane scrollPane = new JScrollPane(table);
		scrollPane.setBounds(24, 85, 526, 216);
		getContentPane().add(scrollPane);		
		
		btnAgregarProveedor = new JButton("Agregar Proveedor");
		btnAgregarProveedor.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				seleccionarRegistro();
				ventanaPadre.bloquearCampos();
				ventanaPadre.botonesEvento();
			}
		});
		btnAgregarProveedor.setBounds(133, 310, 146, 28);
		getContentPane().add(btnAgregarProveedor);
		
		btnRetornar = new JButton("Retornar");
		btnRetornar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				dispose();
			}
		});
		btnRetornar.setBounds(291, 310, 133, 28);
		getContentPane().add(btnRetornar);
		
		cargarListaProveedores();
	}
	
//para desplegar los Proveedores en la tabla al inicio del formulario
	void cargarListaProveedores()          
	{
        DefaultTableModel modelo= new DefaultTableModel();
        String []Titulos = {"CODIGO","NOMBRE","DIRECCION","EMAIL","RNC","FECHA"};
        modelo.setColumnIdentifiers(Titulos);
        this.table.setModel(modelo);
        
        try 
        {
        	try 
        	{
        		Class.forName(CONTROLADOR);
			} 
        	catch (ClassNotFoundException e) 
        	{
				e.printStackTrace();
			}
       
            String []registros= new String[6];
           
            cn  = DriverManager.getConnection(URL_BASEDATOS, "root", "");
			Statement st = cn.createStatement();
            ResultSet rs = st.executeQuery(consultaGeneral);
            
            while(rs.next())
            {
                registros[0]=rs.getString("id_proveedor");
                registros[1]=rs.getString("nombre");
                registros[2]=rs.getString("direccion");
                registros[3]=rs.getString("email");
                registros[4]=rs.getString("rnc");	                
                registros[5]=rs.getString("fecha");
                modelo.addRow(registros);
                                
            }
            table.setModel(modelo);
        }
        catch (SQLException ex)
        {
            Logger.getLogger(BusquedaDeProveedor.class.getName()).log(Level.SEVERE, null, ex);
        }
	}
	
	//para realizar una busqueda selectiva
	void cargarListaProveedoresPor(String consulta)
	{
		DefaultTableModel modelo= new DefaultTableModel();
        String []Titulos = {"CODIGO","NOMBRE","DIRECCION","EMAIL","RNC","FECHA"};
        modelo.setColumnIdentifiers(Titulos);
        this.table.setModel(modelo);
        
        try 
        {
        	try 
        	{
        		Class.forName(CONTROLADOR);
			} 
        	catch (ClassNotFoundException e) 
        	{
				e.printStackTrace();
			}

            String []registros= new String[6];
           
            cn = DriverManager.getConnection(URL_BASEDATOS, "root", "");
			Statement st = cn.createStatement();
            ResultSet rs = st.executeQuery(consulta);

            while(rs.next())
            {
                registros[0]=rs.getString("id_proveedor");
                registros[1]=rs.getString("nombre");
                registros[2]=rs.getString("direccion");
                registros[3]=rs.getString("email");
                registros[4]=rs.getString("rnc");	                
                registros[5]=rs.getString("fecha");
                modelo.addRow(registros);                  
            }
            table.setModel(modelo);
        }
        catch (SQLException ex)
        {
            Logger.getLogger(BusquedaDeProveedor.class.getName()).log(Level.SEVERE, null, ex);
        }
	}
	
	//funcion para seleccionar el Proveedor de la tabla a mostrar...
	public  void seleccionarRegistro() 
	{
		int fila;
		fila =  table.getSelectedRow();
		if (fila == -1) 
		{
			JOptionPane.showMessageDialog(null, "Favor selecionar una fila");
		}
		else
		{		
			String codigoProveedor = "" + table.getValueAt(fila, 0);
			String nombreProveedor = "" + table.getValueAt(fila, 1);
			String direccionProveedor = "" + table.getValueAt(fila, 2);
			String emailProveedor = "" + table.getValueAt(fila, 3);
			String rncProveedor = "" + table.getValueAt(fila, 4);
			String fechaProveedor = "" + table.getValueAt(fila, 5);
			
			ventanaPadre.cargarDatosBusqueda(codigoProveedor,nombreProveedor,direccionProveedor,emailProveedor,rncProveedor,fechaProveedor);

			this.dispose();
		}
	}
}